export default class JJUtil {
    /* 
     * 判定是否为null 
     */
    static isNull(value) {
        if (typeof value == 'function') {
            return false;
        }

        return typeof value == 'undefined' ||
            value == null ||
            value == undefined ||
            value == 'null' ||
            value == 'undefined' ||
            Number.isNaN(value)
    }

    /* 
     * 判定是否非null 
     */
    static isNotNull(value) {
        return !JJUtil.isNull(value)
    }

    /* 
     * 判定是否为空 
     */
    static isEmpty(value) {
        if (JJUtil.isNull(value)) {
            return true
        }

        let result = false

        if (typeof value == 'string') {
            result = (0 == value.length)
        } else if (typeof value == 'object') {
            const array = Object.keys(value)
            result = (0 == array.length)
        }

        return result
    }

    /* 
     * 判定非空 
     */
    static isNotEmpty(value) {
        return !JJUtil.isEmpty(value)
    }

    /* 
     * 随机数
     * 如random(1, 10)，产生[1, 10]之间的随机数
     */
    static random(fromValue, toValue) {
        const randomNumber = Math.floor(Math.random() * (toValue - fromValue + 1) + fromValue)
        return randomNumber
    }

    /* 
     * randomWord 产生任意长度随机字母数字组合 
     * randomFlag-是否任意长度 min-任意长度最小位[固定位数] max-任意长度最大位 
     */
    static randomWord(randomFlag, min, max) {
        var str = "";
        var range = min;
        var arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];

        // 随机产生  
        if (randomFlag) {
            range = Math.round(Math.random() * (max - min)) + min;
        }
        for (var i = 0; i < range; i++) {
            var pos = Math.round(Math.random() * (arr.length - 1));
            str += arr[pos];
        }
        return str;
    }
}
